// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); 1win — официальный сайт букмекерской конторы 1вин – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

1win — официальный сайт букмекерской конторы 1вин

В мире ставок и азарта 1вин является одним из самых популярных и надежных букмекеров. Компания была основана в 2018 году и с тех пор стала одним из лидеров на рынке азарта. 1вин предлагает своим клиентам широкий спектр услуг, включая ставки на спорт, киберспорт, политические события и многое другое.

Официальный сайт 1вин – это место, где вы можете найти все, что вам нужно для успешной ставки. Здесь вы можете выбрать из тысячи вариантов ставок, узнать о последних новостях и событиях, а также получать доступ к различным функциям и инструментам для анализа и прогнозирования результатов.

Преимущества официального сайта 1вин:

• Удобство и доступность: сайт доступен на русском языке, что делает его удобным для пользователей из России и других стран, где русский язык является официальным.

• Возможность ставок на различные виды спорта и события: 1вин предлагает широкий спектр вариантов ставок, включая футбол, баскетбол, теннис, политические события и многое другое.

• Регулярные бонусы и акции: 1вин регулярно предлагает своим клиентам бонусы и акции, чтобы сделать игру еще более интересной и привлекательной.

• Безопасность и конфиденциальность: 1вин обеспечивает безопасность и конфиденциальность своих клиентов, используя современные технологии и меры безопасности.

Если вы ищете надежного партнера для своих ставок, то 1вин – это ваш выбор. Официальный сайт 1вин – это место, где вы можете найти все, что вам нужно для успешной ставки.

Официальный сайт букмекерской конторы 1вин

1вин – это один из самых популярных букмекеров в России и мире. Компания была основана в 2018 году и с тех пор стала одним из лидеров на рынке азартных игр. Официальный сайт 1вин – это место, где можно найти все необходимые функции для успешной ставки на спорт, киберспорт, политические события и другие виды азартных игр.

Официальный сайт 1вин предлагает пользователям широкий спектр функций, включая:

Большой выбор азартных игр

На официальном сайте 1вин можно найти огромный выбор азартных игр, включая футбол, хоккей, баскетбол, теннис, бокс и другие виды спорта. Пользователи могут ставить на матчи, турниры, чемпионаты и другие события.

Кроме того, на официальном сайте 1вин можно найти раздел киберспорта, где можно ставить на матчи по Dota 2, CS:GO, League of Legends и другим играм.

Лучшие коэффициенты

Официальный сайт 1вин предлагает пользователям лучшие коэффициенты на рынке. Это означает, что пользователи могут получать максимальную прибыль от своих ставок.

Кроме того, на официальном сайте 1вин есть система линии, которая позволяет пользователям выбрать лучший коэффициент для своей ставки.

Безопасность и конфиденциальность

Официальный сайт 1вин обеспечивает безопасность и конфиденциальность пользователей. Все данные, передаваемые на сайте, защищены от доступа третьих лиц.

Кроме того, на официальном сайте 1вин есть система двухфакторной аутентификации, которая обеспечивает дополнительную безопасность для пользователей.

Преимущества официального сайта 1вин

Официальный сайт 1вин предлагает пользователям следующие преимущества:

Большой выбор азартных игр

Лучшие коэффициенты на рынке

Безопасность и конфиденциальность

Многофункциональная система линии

Двухфакторная аутентификация

В целом, официальный сайт 1вин – это лучшее место для пользователей, которые ищут надежный и безопасный способ ставки на азартные игры.

Быстрый доступ к ставкам и линиям

В современном мире беттинга speed и convenience – это ключевые факторы, которые влияют на выбор букмекерской конторы. 1win – это платформа, которая обеспечивает быстрый доступ к ставкам и линиям, что позволяет клиентам получать максимальную выгоду из своих ставок.

Для начала, 1win предлагает простой и интуитивно понятный интерфейс, который позволяет пользователям легко найти и сделать ставку на любое событие. Вам не нужно тратить время на поиск нужной линии или ставки – все доступно в одном месте.

  • Многофункциональный поиск: с помощью поиска вы можете найти любую линию или ставку, что ускорит процесс поиска.
  • Категоризация линий: линии на 1win категоризированы по видам спорта, что упрощает поиск нужной линии.
  • Мониторинг ставок: на странице ставок вы можете отслеживать изменения коэффициентов и результаты событий в реальном времени.

Кроме того, 1win предлагает несколько способов для быстрого доступа к ставкам и линиям:

  • Мобильное приложение: с помощью приложения вы можете делать ставки и следить за результатами событий на ходу.
  • Мобильная версия сайта: если вы не хотите скачивать приложение, вы можете использовать мобильную версию сайта 1win.
  • API для разработчиков: для разработчиков 1win предлагает API, который позволяет интегрировать функции 1win в свои приложения.
  • Быстрый доступ к ставкам и линиям – это только часть того, что 1win может предложить. Платформа также предлагает другие функции, такие как:

    Бонусы и акции: 1win регулярно предлагает бонусы и акции для своих клиентов, что может помочь увеличить прибыль.

    Мониторинг счета: на странице счета вы можете отслеживать изменения баланса и историю транзакций.

    Техподдержка: если у вас возникнут вопросы или проблемы, вы можете обратиться к техподдержке 1win, которая работает круглосуточно.

    В целом, 1win – это платформа, которая обеспечивает быстрый доступ к ставкам и линиям, а также предлагает другие функции, которые могут помочь клиентам получать максимальную выгоду из своих ставок.

    Преимущества и функции официального сайта 1вин

    Официальный сайт 1вин – это уникальная возможность для игроков и бетторов из России и других стран, которые ищут надежный и безопасный способ ставок на спорт и игры. В этом разделе мы рассмотрим преимущества и функции официального сайта 1вин, которые делают его одним из лучших букмекерских контор в России.

    Преимущества официального сайта 1вин:

    1. Безопасность и надежность. Официальный сайт 1вин использует современные технологии для обеспечения безопасности и защиты данных пользователей.

    2. Удобство и доступность. Сайт доступен на русском языке, а также имеет мобильную версию, что позволяет игрокам и бетторам делать ставки на спорт и игры в любом месте и в любое время.

    3. Возможность делать ставки на спорт и игры. Официальный сайт 1вин предлагает широкий спектр спортивных событий, включая футбол, хоккей, баскетбол, теннис и другие, а также различные игры, такие как покер, бинго и другие.

    Функции официального сайта 1вин:

    1. Регулярные бонусы и акции. Официальный сайт 1вин регулярно предлагает бонусы и акции для новых и действующих игроков и бетторов, что позволяет увеличить свои выигрыши.

    2. Возможность пополнения счета. Официальный сайт 1вин предлагает различные способы пополнения счета, включая банковские карты, электронные деньги и другие.

    4. 24/7 поддержка. Официальный сайт 1вин предлагает 24/7 поддержку, что позволяет игрокам и бетторам получить помощь в любое время.

    5. Удобство и доступность. Официальный сайт 1вин имеет мобильную версию, что позволяет игрокам и бетторам делать ставки на спорт и игры в любом месте и в любое время.

    6. Регулярные обновления и улучшения. Официальный сайт 1вин регулярно обновляет и улучшает свои функции, чтобы обеспечить игрокам и бетторам наилучшие условия для ставок на спорт и игры.

    Design and Develop by Ovatheme